package MobileTestClient;

import java.net.*;
import java.util.HashMap;
import java.util.Map;
import java.io.*;

import org.json.simple.JSONValue;

/**
 * <pre>
 * @Package : MobileTestClient
 * @File    : MobileTestClient.java
 * <pre>
 *
 * @Author  : 차재우
 * @Date    : 2013. 7. 24.
 * @Version :
 */
public class MobileTestClient {
	private final String serverIp = "192.168.75.64";

	// 서버 접속 소켓
	private Socket socket = null;

	// 데이터 송수신 관련 스트림
	private DataInputStream in = null;
	private DataOutputStream out = null;
	private BufferedReader br = null;
	private PrintWriter writer = null;

	public static void main(String[] args) {
		new MobileTestClient().Client();
	}

	private void Client() {
		try {
			// 소켓을 생성하여 연결을 요청한다.
			socket = new Socket(serverIp, 9875);
			
			// 소켓의 입력, 출력 스트림
			in = new DataInputStream(socket.getInputStream());
			br = new BufferedReader(new InputStreamReader(in));				
			out = new DataOutputStream(socket.getOutputStream());
			writer = new PrintWriter(out);
			
			// 전송할 테스트 데이터 생성
			String sendData = MakeTestData();
			
			Thread.sleep(10 * 1000);
			
			// 서버로 데이터 전송
			writer.println(sendData);
			writer.flush();
			
			// 서버로부터 데이터 수신
			String recvData = br.readLine();
			System.out.println(recvData);
			
			Thread.sleep(GetRandomValue(5) * 1000);

			// 스트림과 소켓을 닫는다.
			in.close();
			out.close();
			socket.close();
			System.out.println("연결이 종료되었습니다.");
		} catch(ConnectException ce) {
			ce.printStackTrace();
		} catch(IOException ie) {
			ie.printStackTrace();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	private String MakeTestData() {
		Map<String, String> obj = new HashMap<String, String>();

		obj.put("TRNO", "RM01");
		obj.put("ITYPE", "O");
		obj.put("CSERNO", "S12345");
		obj.put("BTHYMD", "19811220");
		obj.put("SEXCD", "M");
		obj.put("DEPTCD", "01");
		obj.put("ISUNO", "1234");
		obj.put("ISUDT", "20130701");
		obj.put("IOTYPE", "I");

		String jsonStr = JSONValue.toJSONString(obj);
		
		return jsonStr;
	}
	
	private int GetRandomValue(int term) {
		return (1 + (int)(Math.random() * term));
	}
}
